package com.liuguangzhou.controller;

import com.liuguangzhou.model.User;
import com.liuguangzhou.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Classname UserController
 * @Author liuguangzhou
 * @Date 2020-04-06
 */
@Controller
public class UserController {
    @Autowired
    private UserServiceImpl userService;

    /**
     * 1判断当前登录的用户是否被限制登录
     * 1.1如果没有被限制
     * (执行登录功能)
     * 2判断是否登录成功
     * 2.1登录成功--》(清除输入密码错误次数信息)
     * 2.2登录不成功
     * 3记录登录错误次数
     * (判断Redis中的登录次数KEY是否存在) user: loginCount:fail:用户名
     * 3.1如果不存在
     * 是第一次登录失败次数为1
     * user: loginCount:fail:用户名进行赋值，同时设置失效期
     * 3.2如果存在
     * 查询登录失败次数的key结果
     * if(结果<4)
     * user: loginCount:fail:+1
     * else{//4限制登录KEY存在，同时设置限制登录时间锁定1小时。
     * 1.2如果被限制
     * 做相应提示
     */
    @RequestMapping("login")
    @ResponseBody
    public String login(final String userName, final String password, final String valCode) {
        /**
         * 先验证验证码 valcode
         */


        /**
         *先判断是否被锁
         */
        Long lockTime = userService.userLoginLock(User.getLoginTimeLockKey(userName));
        if (-1 != lockTime) {
            return "用户" + userName + "已被锁定,还需要" + lockTime + "分钟后才可进行登录";
        } else {
            //没有被锁定 进行登录
            User user = userService.login(userName, password);
            if (user != null) {
                //登录成功 清除key 返回相应页面
                return null;
            } else {
                return userService.userLoginValue(userName);
            }

        }
    }
}
